<?php
/* 
 * ********* CVS HEADER ********* 
 * 
 * $RCSfile: box.php,v $ 
 * $Date: 2007/07/30 21:14:58 $ 
 * $Revision: 1.3 $ 
 * 
 * ********* CVS HEADER ********* 
 */
/**
  * Classe box 
  * Developpee par Rodrigue LE GALL
  * sous licence GPL
  * Objectif : Construire les boxs
  */
require_once(get_path_module("environnement.parametre"));
require_once(get_path_module("environnement.tpl"));

function restaure_box($object){
        return unserialize(stripslashes($object));
    }

class box
{
    var $id=0;
    var $prompt="";
    var $environnement="";
    var $fichier="";
    var $param;
    var $droit="::";
    var $utiliser_droit=0;
    var $template="";
    var $nom="";
    var $description="";
    var $repertoire="";
    var $mode=0;
    var $id_type=0;
    var $type_nom="";
    var $type_description="";
    var $env;
    var $needenv = 0;
    var $tpl;
    
    /**
      * setid : mise a jour de l'id du box
      */
    function setid($valeur=0){
        $this->id=$valeur;
        return true;
    }
    
    /**
      * setnom : mise a jour du nom du box
      */
    function setnom($valeur=''){
        $this->nom=$this->_kill_CR($valeur);
        $this->fichier='box.'.$this->nom.'.php';
        return true;
    }
    /**
      * setenvironnement : mise a jour de l'environnement du box
      */
    function setenvironnement($valeur=''){
        $this->environnement=$valeur;
        return true;
    }
            
    /**
      * setparam : mise a jour des parametres du box
      */
    function setparam($valeur){
        $this->param = $valeur;
        return true;
    }
    
    /**
      * getparam : retourne les parametres du box
      */
    function getparam(){
        return $this->param;
    }
    
    /**
      * usedroit : Precise si les droits sont utilises
      * -1 : non
      * 1 : oui
      * rien : retourne si les droits sont utilises
      */
    function usedroit($valeur='rien'){
        if($valeur=='rien'){
            return $this->utiliser_droit;
        }
        $this->utiliser_droit=$valeur;   
        return true;
    }
    
    /**
      * setdroit : mise a jour des droits du box
      */
    function setdroit($valeur=''){
        $this->droit=$valeur;   
        return true;
    }
    
    /**
      * settemplate : met a jour le fichier du template
      */
    function settemplate($valeur){
        $this->template=$valeur;
        return true;   
    }
    
    /**
      * gettemplate : retourne fichier template du box
      */
    function gettemplate(){
        return $this->template;
    }
    
    /**
      * setdescription : mise a jour la description du box
      */
    function setdescription($valeur=''){
        $this->description=$this->_kill_CR($valeur);
        return true;
    }
    
    /**
      * getdescription : retourne la description du box
      */
    function getdescription(){
        return stripslashes($this->description);
    }
    
    /**
      * setrepertoire : met a jour le repertoire du box
      */
    function setrepertoire($valeur=''){
        $this->repertoire=$valeur;
        return true;
    }
            
    /**
      * getrepertoire : retourne le repertoire du box
      */
    function getrepertoire(){
        return $this->repertoire;
    }        
    
    /**
      * setmode : met a jour le mode du box
      */ 
    function setmode($valeur=0){
        $this->mode=$valeur;
        return true;    
    }
    
    /**
      * getmode : retourne le mode du box
      */ 
    function getmode(){
        return $this->mode;
    }
    
    /**
      * settype : met a jour le type du box
      */ 
    function settype($valeur=0){
        $this->id_type=$valeur;
        return true;    
    }
    
    /**
      * gettype : retourne le type du box
      */ 
    function gettype(){
        return $this->id_type;
    }
    
    /**
      * settypenom : met a jour le nom du type du box
      */ 
    function settypenom($valeur=""){
        $this->type_nom=$valeur;
        return true;    
    }
    
    /**
      * gettypenom : retourne le nom du type du box
      */ 
    function gettypenom(){
        return $this->type_nom;
    }
    
    /**
      * settypedescription : met a jour la description du type du box
      */ 
    function settypedescription($valeur=""){
        $this->type_description=$this->_kill_CR($valeur);
        return true;    
    }
    
    /**
      * gettypedescription : retourne la description du type du box
      */ 
    function gettypedescription(){
        return $this->type_description;
    }
    
    /**
      * getid : retourne l'id du box
      */
    function getid(){
        return $this->id;
    }
    
    /**
      * getnom : retourne le nom du box
      */
    function getnom(){
        return $this->nom;
    }

    /**
      * getenvironnement : retourne le nom de l'environnement
      */
    function getenvironnement(){
        return $this->environnement;
    }
    
    /**
      * getfichier : retourne le nom du fichier du box
      */
    function getfichier(){
        return $this->fichier;
    }
    
    /**
      * construct: construit le prompt
      */
    function construct(){
    
    }
    
    /**
      * setenv : met a jour l'objet environnement
      */
    function setenv($valeur){
        if($this->needenv == 1){
            $this->env=$valeur;   
        }
        return true;
    }
    
    /**
      * getenv : retourne l'objet environnement
      */
    function getenv(){
        return $this->env;
    }
    /**
      * write : fonction retournant le prompt du box
      */
    function write(){
        if($this->usedroit()>0){
            $sortie = "<?php if(strpos(\"$this->droit\",\":\$session[id_groupe]:\")>0){ ?>\n";
            $sortie.= $this->prompt;
            $sortie.= "<?php \n } ?>";
        } else {
            $sortie = $this->prompt;
        }
        return $sortie;    
    }
    
    /**
      * writefile() : ecrit le prompt dans le fichier
      */
    function writefile(){
		$L_base = get_env_path();
        $fp = fopen($L_base.$this->environnement.'/'.$this->fichier,"w");
        fwrite($fp, $this->write());
        fclose($fp);
    }
    
    /**
      * serialize : retourne la forme serialisee du box
      */
    function serialize(){
        return addslashes(serialize($this));
    }
    
    
    function _kill_CR($texte){
		$texte = ereg_replace ("\r\n?", "\n",$texte);
		return $texte;
	}
}
